package helloworld;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import org.junit.Test;
import utils.RabbitMQUtils;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

public class Provider {
    //生产消息
    @Test
    public void testSendMessage() throws IOException, TimeoutException {
/*        //创建连接rabbitmq的连接工厂对象
        ConnectionFactory connectionFactory = new ConnectionFactory();
        //设置连接rabbitmq主机
        connectionFactory.setHost("82.156.8.185");
        //设置端口号
        connectionFactory.setPort(5672);
        //设置连接哪个虚拟主机
        connectionFactory.setVirtualHost("/ems");
        //设置访问虚拟主机的用户名和密码
        connectionFactory.setUsername("ems");
        connectionFactory.setPassword("123");
        //获取连接对象
        Connection connection = connectionFactory.newConnection();*/

        //调用工具类获取连接对象
        Connection connection = RabbitMQUtils.getConnection();

        //获取连接中的通道
        Channel channel = connection.createChannel();
        //通道绑定对应消息队列
        //参数一：队列名称，如果队列不存在则自动创建
        //参数二：用来定义队列特性是否要持久化，true持久化队列，false不持久化
        //参数三：是否独占队列，ture独占队列，false不独占
        //参数四：是否在消费完成后自动删除队列，ture自动删除，false不自动删除
        channel.queueDeclare("hello",false,false,false,null);
        //发布消息
        //参数一：交换机名称
        //参数二：队列名称
        //参数三：传递消息额外设置
        //参数四：消息的具体内容
        channel.basicPublish("", "hello", null, "hello rabbitmq".getBytes());

        /*channel.close();
        connection.close();*/

        //调用工具类关闭连接
        RabbitMQUtils.closeConnectionAndChannel(channel, connection);
    }
}
